﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

using UbicaTuReu.WCF.Dominio;
using UbicaTuReu.WCF.Persistencia;

namespace UbicaTuReu.WCF
{
    
    public class Usuarios : IUsuarios
    {

        private UsuarioDAO oUsuarioDAO = null;
        private UsuarioDAO UsuarioDAO{
            get
            {
                if (oUsuarioDAO==null)
                    oUsuarioDAO= new UsuarioDAO();
                return oUsuarioDAO;
            } 
        }

        private RolDAO oRolDAO = null;
        private RolDAO RolDAO {
            get
            {
                if (oRolDAO == null)
                    oRolDAO = new RolDAO();
                return oRolDAO;
            }        
        }    

       public Usuario CrearUsuario(int codigo, string nombre, string dni, string correo, string clave, int estado, int rol)
        {
            Rol rolExistente = RolDAO.Obtener(rol);
            Usuario oUsuarioCrear = new Dominio.Usuario()
           {
               Nombre=nombre,
               Dni=dni,
               Correo=correo,
               Clave=clave,
               Estado=estado,
               Rol=rolExistente

           };
           return UsuarioDAO.Crear(oUsuarioCrear);
        }

        public Usuario ObtenerUsuario(int codigo)
        {
            return UsuarioDAO.Obtener(codigo);
        }

        public Usuario ModificarUsuario(int codigo, string nombre, string dni, string correo, string clave, int estado, int rol)
        {
            Rol rolExistente = RolDAO.Obtener(rol);
            Usuario oUsuarioModificar = new Usuario()
            {
                Codigo = codigo,
                Nombre=nombre,
                Dni=dni,
                Correo=correo,
                Clave=clave,
                Estado = estado,
                Rol = rolExistente
            };
            return UsuarioDAO.Modificar(oUsuarioModificar);
        }

        public void EliminarUsuario(int codigo)
        {
            Usuario oUsuario = UsuarioDAO.Obtener(codigo);
            UsuarioDAO.Eliminar(oUsuario);
        }

        public List<Usuario> ListarUsuario()
        {
            return UsuarioDAO.ListarTodos().ToList();
        }
    }
}

